class Stud1:
    def __init__(self, no1, name1, score1):
        self.no = no1
        self.name = name1
        self.score = score1

    def __repr__(self):
        return str(self.no) + '\t\t' + self.name + '\t\t' + str(self.score)


class Store1:
    def __init__(self):
        self.data = []

    def Create(self):
        self.data.append(Stud1(2018001, '王华', 90))
        self.data.append(Stud1(2018010, '刘丽', 62))
        self.data.append(Stud1(2018006, '陈明', 54))
        self.data.append(Stud1(2018009, '张强', 95))
        self.data.append(Stud1(2018007, '许兵', 76))
        self.data.append(Stud1(2018012, '李萍', 88))
        self.data.append(Stud1(2018005, '李英', 82))

    def display(self):
        print('学号\t\t姓名\t\t分数')
        for student in self.data:
            print(student)

    def findi(self):
        try:
            a=int(input('请输入你要查找学生的学号:'))
            for student in self.data:
                if int(student.no) == a:
                    print(student)
                    break
            else:
                print('未找到该学生信息请重新输入:')
                a=int(input('请输入你要查找学生的学号:'))
                self.findi()
        except ValueError:
            print("输入无效，请确保学号是数字。")
    def jxs(self, x, y, z):
        self.data.append(Stud1(x, y, z))
    def xg(self):
        try:
            q = int(input('请输入你要修改学生的学号：'))
            t = float(input('请输入你要修改的分数:'))
            for y in range(len(self.data)):
                if int(self.data[y].no) == q:
                    self.data[y].score = t
                    print('修改成功！')
                    break
            else:
                print('学号输入错误请重新输入：')
                q = int(input('请输入你要修改学生的学号：'))
                t = eval(input('请输入你要修改的分数:'))
                self.xg()
        except ValueError:
            print("输入无效，请确保学号和分数是数字。")
    def yc(self):
            try:
                f=int(input('请输入你要移除的学生的学号:'))
                for student in self.data:
                    if student.no == f:
                        self.data.remove(student)
                        print('删除成功！')
                        break
                else:
                    print('学号输入错误请重新输入:')
                    f=int(input('请输入你要移除的学生的学号：'))
                    self.yc()
            except ValueError:
                print('输入无效，请确保输入一个合法的数字。')
    def cr(self):
        while True:
            try:
                w = int(input('请输入你想增加的学生信息的位置：'))
                if w < 0 or w > len(self.data):
                    print('输入的位置不合法，请重新输入：')
                else:
                    x = int(input('输入增加学生的学号：'))
                    break
            except ValueError:
                print('输入错误，请输入一个合法的数字：')
        y = input('输入增加学生的姓名：')
        z = float(input('输入增加学生的成绩：'))
        self.data.insert(w, Stud1(x, y, z))
        print('增加成功！')
def hh():
    print('********欢迎来到高等数学管理系统********')
    print('1：显示所有学生成绩')
    print('2：增加一个学生信息')
    print('3：按学号删除一个学生信息')
    print('4：按学号修改一个学生信息')
    print('5：按学号查询一个学生信息')
    print('退出键请按：6')
st = Store1()
st.Create()
hh()
while True:
    try:
        i = int(input('请输入你要选的功能：'))
        if i == 1:
            st.display()
            hh()
        elif i == 2:
            st.cr()
            hh()
        elif i == 3:
            st.yc()
            hh()
        elif i == 5:
            st.findi()
            hh()
        elif i == 4:
            st.xg()
            hh()
        elif i == 6:
            print("感谢使用！")
            break
        else:
            print('输入错误，请重新输入')
    except ValueError:
        print('输入错误，请重新输入')



class Stud1:
    def __init__(self, no1, name1, score1):
        self.no = no1
        self.name = name1
        self.score = score1

    def __repr__(self):
        return str(self.no) + '\t\t' + self.name + '\t\t' + str(self.score)


class Store1:
    def __init__(self):
        self.data = []

    def Create(self):
        self.data.append(Stud1(2018001, '王华', 90))
        self.data.append(Stud1(2018010, '刘丽', 62))
        self.data.append(Stud1(2018006, '陈明', 54))
        self.data.append(Stud1(2018009, '张强', 95))
        self.data.append(Stud1(2018007, '许兵', 76))
        self.data.append(Stud1(2018012, '李萍', 88))
        self.data.append(Stud1(2018005, '李英', 82))

    def display(self):
        print('学号\t\t姓名\t\t分数')
        for student in self.data:
            print(student)

    def findi(self):
        while True:
            try:
                a=int(input('请输入你要查找学生的学号:'))
                for student in self.data:
                    if int(student.no) == a:
                        print(student)
                        return
                else:
                    print('未找到该学生信息请重新输入:')
            except ValueError:
                print("输入无效，请确保学号是数字。")
    def jxs(self, x, y, z):
        self.data.append(Stud1(x, y, z))
    def xg(self):
        while True:
            try:
                q = int(input('请输入你要修改学生的学号：'))
                for y in range(len(self.data)):
                    if int(self.data[y].no)==q:
                        t = float(input('请输入你要修改的分数:'))
                        self.data[y].score=t
                        print('分数修改成功!')
                        return
                else:
                    print('学号输入错误请重新输入：')
            except ValueError:
                print("输入无效，请确保学号和分数是数字。")
    def yc(self):
        while True:
            try:
                f = int(input('请输入你要移除的学生的学号：'))
                for student in self.data:
                    if student.no == f:
                        self.data.remove(student)
                        print('学生信息已成功删除。')
                        return
                else:
                    print('未找到该学生信息，请重新输入:')
            except ValueError:
                print('输入无效，请确保输入一个合法的数字。')
    def cr(self):
        while True:
            try:
                w = int(input('请输入你想增加的学生信息的位置：'))
                x = int(input('输入增加学生的学号：'))
                if w < 0 or w > len(self.data):
                    print('输入的位置不合法，请重新输入：')
                else:
                    break
            except ValueError:
                print('输入错误，请重新输入：')
        y = input('输入增加学生的姓名：')
        z = float(input('输入增加学生的成绩：'))
        self.data.insert(w, Stud1(x, y, z))
        print('增加成功！')


def hh():
    print('********欢迎来到高等数学管理系统********')
    print('1：显示所有学生成绩')
    print('2：增加一个学生信息')
    print('3：按学号删除一个学生信息')
    print('4：按学号修改一个学生信息')
    print('5：按学号查询一个学生信息')
    print('退出键请按：6')
st = Store1()
st.Create()
hh()
while True:
    try:
        i = int(input('请输入你要选的功能：'))
        if i == 1:
            st.display()
            hh()
        elif i == 2:
            st.cr()
            hh()
        elif i == 3:
            st.yc()
            hh()
        elif i == 5:
            st.findi()
            hh()
        elif i == 4:
            st.xg()
            hh()
        elif i == 6:
            print("感谢使用！")
            break
        else:
            print('输入错误，请重新输入')
    except ValueError:
        print('输入错误，请重新输入')








